var luckysheetConfig = function() {
	return {
		getOptionsData(rowNums, colNums, cellData, dataVerfications) {
			let data = [{
				"name": "检验", //工作表名称
				"color": "", //工作表颜色
				"index": 0, //工作表索引
				"status": 1, //激活状态
				"order": 0, //工作表的下标
				"hide": 0, //是否隐藏
				"row": rowNums, //行数
				"column": colNums, //列数
				"defaultRowHeight": 19, //自定义行高
				"defaultColWidth": 140, //自定义列宽
				"celldata": cellData,
				"config": {
					"merge": {}, //合并单元格
					"borderType": "border-all",
					"rowlen": {}, //表格行高
					"columnlen": {}, //表格列宽
					"rowhidden": {}, //隐藏行
					"colhidden": {}, //隐藏列
					"borderInfo": {
						"range": "0:100",
						"value": "1px solid #000000"
					}, //边框
					"authority": {}, //工作表保护

				},
				"scrollLeft": 0, //左右滚动条位置
				"scrollTop": 0, //上下滚动条位置
				"luckysheet_select_save": [], //选中的区域
				"calcChain": [], //公式链
				"isPivotTable": false, //是否数据透视表
				"pivotTable": {}, //数据透视表设置
				"filter_select": {}, //筛选范围
				"filter": null, //筛选配置
				"luckysheet_alternateformat_save": [], //交替颜色
				"luckysheet_alternateformat_save_modelCustom": [], //自定义交替颜色    
				"luckysheet_conditionformat_save": {}, //条件格式
				"zoomRatio": 1.6, // 缩放比例
				"image": [], //图片
				"showGridLines": 1, //是否显示网格线
				"dataVerification": dataVerfications, //数据验证配置
				"frozen": {
					type: 'rangeBoth',
					range: {
						row_focus: rowNums - vm.originData.inspections.length - 1 - 1,
						column_focus: 0
					}
				}
			}];
			return data;
		},
		rangeSelect(sheet, range, rowNums, colNums) { // lucksheet

			$('#autoInput').val('');
			// vm.InputFocus = 'none';

			// 提取选中单元格的行和列信息
			let ranged = {
				r: range[0].row[0],
				c: range[0].column[0],
			};

			// 从所有允许修改的单元格中，找到对应信息
			const editObj = vm.editCells.filter(item => item.r == ranged.r && item.c == ranged
				.c);




			vm.editRange = range;

			// 获取检验结果行列信息
			let resRange = {
				r: vm.headerLevel + vm.originData.inspections.length + 1,
				// c: ranged.c
			}
			if (ranged.r == resRange.r) {

				for (let i = 0; i < vm.originData.FQCDetail.length; i++) {
					if (vm.originData.FQCDetail[i].cmax == ranged.c) {

						var cellValue = luckysheet.getCellValue(ranged.r, ranged.c);
						// vm.editRange = range;
						vm.isJYResult = cellValue;
						vm.showResult = true;

						return;
					}
				}
			}


			// 判断点击的是否为检验结果列（指定列，非标题行内的单元格）
			// if (ranged.r > vm.headerLevel && ranged.c == colNums) {
			//  vm.showResult = true;
			//  // 获取单元格的值
			//  var cellValue = luckysheet.getCellValue(ranged.r, ranged.c);
			//  // 赋值选中信息
			//  vm.editRange = range;
			//  vm.isJYResult = cellValue;
			// }

			// 判断当前选中单元格是否为允许修改的单元格，是的话则让隐藏的输入框聚焦
			if (editObj.length == 0) {
				vm.ChoiceCellData = {};
				vm.DeviceInfo.NeedDevice = '不可测量';
				vm.showEditWindow = false;
				vm.allowToNext = false;
				vm.editRange = [];
				$('#autoInput').val('')
			} else if (editObj.length) {
				// 赋值选中信息
				// vm.editRange = range;
				// 切换后，清除输入框内容
				$('#autoInput').val('');
				let IsWhere = {
					r: editObj[0].r,
					c: editObj[0].c,
				};
				vm.allowToNext = true;


				// 获取选中输入框位置对应的对象数据
				let data = GetChoiceCellData(vm.originData.inspections, IsWhere);
				vm.ChoiceCellData = APP.deepClone(data);
				// 获取选中单元格所需的测量设备
				if (data.Benchmark) {
					// 检查 Benchmark 是否包含 '|' 字符
					const benchmark = data.Benchmark;
					const index = benchmark.indexOf('|');

					// 根据是否找到 '|' 来设置 NeedDevice 的值
					vm.DeviceInfo.NeedDevice = index === -1 ? benchmark : benchmark.slice(0,
						index);


				} else {
					vm.showEditWindow = false;
					vm.allowToNext = false;
				}

			} else {
				vm.editRange = [];
				vm.ChoiceCellData = {};
				vm.DeviceInfo.NeedDevice = '不可测量';
				vm.allowToNext = false;
			}
		},
		cellEditBefore(range, rowNums, colNums) { // 双击单元格
			// 提取选中单元格的行和列信息
			let ranged = {
				r: range[0].row_focus,
				c: range[0].column_focus,
			};



			// 从所有允许修改的单元格中，找到对应信息
			const editObj = vm.editCells.filter(item => item.r == ranged.r && item.c ==
				ranged.c);


			// 判断点击的是否是最后一列的备注，如果是，则允许弹起键盘
			let IsRemark = false;
			// if (vm.RemarkIndex.c == ranged.c && vm.RemarkIndex.r < ranged.r) {
			//  IsRemark = true;
			// };

			// 当前选中单元格为 允许修改的单元格 || 备注项
			if (editObj.length > 0 || IsRemark) {
				let IsWhere = {
					r: ranged.r,
					c: ranged.c,
				};
				// 获取选中输入框位置对应的对象数据
				let data = GetChoiceCellData(vm.originData.inspections, IsWhere);



				function showAndFocusInput(cellValue) {
					// 可弹起软键盘 , 若 InputFocus 为 none 时，禁止键盘弹起
					vm.InputFocus = 'text';
					// 修改输入框盒子层级，控制输入框显示隐藏
					// 延迟聚焦输入框
					setTimeout(() => {
						vm.showEditWindow = true;
						vm.allowToNext = true;
						// 给输入框赋值
						$('#autoInput').val(cellValue);
						// vm.$refs.editKeyControl.querySelector('input').focus();
						$("#autoInput").focus();
					}, 50);
				}

				if (IsRemark) {
					// 备注
					// 获取选中单元格的位置和内容
					const cellValue = luckysheet.getCellValue(ranged.r, ranged.c);
					// 显示并聚焦输入框
					showAndFocusInput(cellValue);
				} else {
					const benchmark = data.Benchmark;
					const index = benchmark.indexOf('|');
					const NeedDevice = index === -1 ? benchmark : benchmark.slice(0,
						index);

					// 特殊设备处理
					// if (NeedDevice.includes("光谱仪")) {
					// 当所需设备为光谱、三坐标等
					// 根据IsLaboratory字段，判断当前单元格是否为报告展示类型


					//记录选中单元格对象
					// vm.editRange = range;
					if (data.Type == 2) { // 检验标准

						//记录选中单元格对象
						// vm.editRange = range;
						vm.isSelectCellResult = data.value;

						if (data.IsLaboratory) {
							// 1、判断当前单元格是否存在值
							// 获取选中单元格的位置和内容
							const cellValue = luckysheet.getCellValue(ranged.r, ranged.c);
							try {
								if (data.value == "") {
									// 没有值的时候调取检验列表数据
									basicConfig.GetPopupInfoByDevice(vm.DeviceInfo.NeedDevice);
								} else {

									// 要求，弹层代码、变量、脚本完善
									vm.rowDeviceForm.result = cellValue && cellValue.toLowerCase() ==
										"ng" ? 0 : 1;

									// 展示明细弹层
									basicConfig.ViewPopupInfoByDevice(NeedDevice);

								}

							} catch (err) {

							}


						} else {
							// 打开选择ok或者ng的弹层
							vm.showSelectCellResult = true;
							vm.showEditWindow = true;
							vm.allowToNext = false;

						}


						// throw '只读，回传报错';
					} else {

						if (data.IsLaboratory) {
							// 1、判断当前单元格是否存在值
							// 获取选中单元格的位置和内容
							const cellValue = luckysheet.getCellValue(ranged.r, ranged.c);
							try {
								if (data.value == "") {
									// 没有值的时候调取检验列表数据
									basicConfig.GetPopupInfoByDevice(vm.DeviceInfo.NeedDevice);
								} else {

									// 要求，弹层代码、变量、脚本完善
									// vm.rowDeviceForm.result = cellValue && cellValue.toLowerCase() ==
									//  "ng" ? 0 : 1;


									// 展示明细弹层
									basicConfig.ViewPopupInfoByDevice(NeedDevice);

								}

							} catch (err) {

							}


						} else {
							vm.InputFocus = 'text';
							vm.allowToNext = true;
							// 获取选中单元格的位置和内容
							const cellValue = luckysheet.getCellValue(ranged.r, ranged.c);
							// 显示并聚焦输入框
							showAndFocusInput(cellValue);

						}

					}
				}

			} else {
				vm.showEditWindow = false;
				$('#autoInput').val('');
			}
			throw '只读，回传报错';
		},
		cellUpdated(r, c, oldValue, newValue, isRefresh) {
			const inspections = vm.originData.inspections;
			// 判断是否检验结果行
			if (r != vm.headerLevel + vm.originData.inspections.length + 1) {
				for (const inspection of inspections) {
					for (const item of inspection.FQCItems) {
						let color = item.result == 1 ? "#07d348" : item.result == 0 ? "#f00" : "#a8a8a8";
						if (item.c == c && item.r == r) {

							luckysheet.setCellFormat(r, c, "fc", color);
						}
					}
				}
			}



		},
	}
}()